import axios from 'axios';
import AsyncStorage from '@react-native-async-storage/async-storage';

// debugger
axios.defaults.baseURL = 'http://172.21.1.66:5000/';
// axios.defaults.baseURL = env.VITE_SERVICE_URI;
axios.defaults.timeout = 10000;
axios.defaults.withCredentials = false; // 表示跨域请求时是否需要使用凭证  默认 false
// axios.defaults.headers["Content-Type"] = "application/x-www-form-urlencoded";
axios.defaults.headers['Content-Type'] = 'application/json';
axios.interceptors.request.use(
    async config => {
        const token = await AsyncStorage.getItem('accessToken');
        token && (config.headers.Authorization = `Bearer ${token}`);
        return config;
    },
    error => {
        return Promise.reject(error);
    }
);
axios.interceptors.response.use(
    response => {
        // const {data} = response;
        // if (
        //   // 游客
        //   (data &&
        //     data.code === 200 &&
        //     data.status === 400 &&
        //     data.msg &&
        //     data.msg.includes('未发现用户信息')) ||
        //   // token过期
        //   (data && data.code === 400 && data.status === 6)
        // ) {
        //   console.log('页面过期，请重新登录');
        //   localStorage.clear();
        //   return router.push('/login/login');
        // }
        return response;
    },
    error => {
        const { response } = error;
        if (!response) {
            return Promise.reject(error);
        }
        const { message } = response.data;
        if (message && message.includes('timeout')) {
        }
        switch (response.data?.statusCode) {
            case 401:
                // token  过期
                break;
            case 403:
                //  服务器拒绝 权限不足
                break;
            case 404:
                // 找不到
                // Toast.fail('Not find')
                break;
            case 500:
                // 服务器错误
                break;
            default:
                console.log(response.data);
                // 其他错误
                break;
        }
        return Promise.reject(response.data);
    }
);

export default axios;
